package com.xy.webadmin.app.dto.userEmail;

import com.xy.common.core.validator.UpdateGroup;
import com.xy.common.core.validator.ConstDictRef;
import com.xy.application.common.constant.ThirdOAPlatform;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.*;

/**
 * 公司数据源Dto对象。
 *
 * @author xiaoyue
 * @date 2025-05-13
 */
@Schema(description = "公司数据源Dto对象")
@Data
public class CompanyConfigDto {

    /**
     * 公司。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "公司。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，公司不能为空！", groups = {UpdateGroup.class})
    private Long companyId;

    /**
     * 阿里云短信KeyId。
     */
    @Schema(description = "阿里云短信KeyId。")
    private String smsAccessKeyId;

    /**
     * 阿里云短信Key密钥。
     */
    @Schema(description = "阿里云短信Key密钥。")
    private String smsAccessKeySecret;

    /**
     * 阿里云全局接入点域名。
     */
    @Schema(description = "阿里云全局接入点域名。")
    private String smsEndpoint;

    /**
     * 邮件服务器域名。
     */
    @Schema(description = "邮件服务器域名。")
    private String emailHost;

    /**
     * 邮件服务器端口。
     */
    @Schema(description = "邮件服务器端口。")
    private String emailPort;

    /**
     * 邮箱用户名。
     */
    @Schema(description = "邮箱用户名。")
    private String emailUsername;

    /**
     * 邮件授权码。
     */
    @Schema(description = "邮件授权码。")
    private String emailPassword;

    /**
     * 企业微信ID。
     */
    @Schema(description = "企业微信ID。")
    private String weworkCorpid;

    /**
     * 企业微信应用密钥。
     */
    @Schema(description = "企业微信应用密钥。")
    private String weworkCorpsecret;

    /**
     * 企业微信应用ID。
     */
    @Schema(description = "企业微信应用ID。")
    private String weworkAgentId;

    /**
     * 企业微信公众号跳转根URL。
     */
    @Schema(description = "企业微信公众号跳转根URL。")
    private String weworkUrl;

    /**
     * 微信公众号APPID。
     */
    @Schema(description = "微信公众号APPID。")
    private String wechatAppId;

    /**
     * 微信公众号密钥。
     */
    @Schema(description = "微信公众号密钥。")
    private String wechatSecret;

    /**
     * 微信公众号跳转根URL。
     */
    @Schema(description = "微信公众号跳转根URL。")
    private String wechatUrl;

    /**
     * 钉钉企业ID。
     */
    @Schema(description = "钉钉企业ID。")
    private String dingtalkCropId;

    /**
     * 钉钉APPKEY。
     */
    @Schema(description = "钉钉APPKEY。")
    private String dingtalkAppKey;

    /**
     * 钉钉密钥。
     */
    @Schema(description = "钉钉密钥。")
    private String dingtalkAppSecret;

    /**
     * 钉钉应用ID。
     */
    @Schema(description = "钉钉应用ID。")
    private String dingtalkAgentId;

    /**
     * 钉钉跳转根URL。
     */
    @Schema(description = "钉钉跳转根URL。")
    private String dingtalkUrl;

    /**
     * 飞书APPID。
     */
    @Schema(description = "飞书APPID。")
    private String larkAppId;

    /**
     * 飞书密钥。
     */
    @Schema(description = "飞书密钥。")
    private String larkAppSecret;

    /**
     * 飞书跳转根URL。
     */
    @Schema(description = "飞书跳转根URL。")
    private String larkUrl;

    /**
     * 默认角色。
     */
    @Schema(description = "默认角色。")
    private Long defaultRoleId;

    /**
     * 默认数据权限。
     */
    @Schema(description = "默认数据权限。")
    private Long defaultDataPermId;

    /**
     * 组织架构平台。
     */
    @Schema(description = "组织架构平台。")
    @ConstDictRef(constDictClass = ThirdOAPlatform.class, message = "数据验证失败，组织架构平台为无效值！")
    private Integer oaSyncPlatform;
}
